<?php

class WucMultiSelectCombinado extends TTemplateControl {
//<editor-fold defaultstate="collapsed" desc="Variables de Configuracion">
  //variables privadas
  const NOMBRE_WEB_USER_CONTROL = "wucMultiSelectCombinado";
  const NOMBRE_ARCHIVO_JS = "wucMultiSelectCombinado.js";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getTextLabelPadre() { return $this->getViewState("TextLabelPadre"); }
  public function setTextLabelPadre($value) { $this->setViewState("TextLabelPadre", $value); }

  public function getVisibleLabelAyuda() { return $this->getViewState("VisibleLabelAyuda"); }
  public function setVisibleLabelAyuda($value) { $this->setViewState("VisibleLabelAyuda", $value); }

  public function getVisibleCheckTodosPadre() { return $this->getViewState("VisibleCheckTodosPadre"); }
  public function setVisibleCheckTodosPadre($value) { $this->setViewState("VisibleCheckTodosPadre", $value); }
  
  public function getVisibleCheckTodosHija() { return $this->getViewState("VisibleCheckTodosHija"); }
  public function setVisibleCheckTodosHija($value) { $this->setViewState("VisibleCheckTodosHija", $value); }
  
  public function getRowsListBoxHija() { return $this->getViewState("RowsListBoxHija"); }
  public function setRowsListBoxHija($value) { $this->setViewState("RowsListBoxHija", $value); }
  
  public function getRowsListBoxPadre() { return $this->getViewState("RowsListBoxPadre"); }
  public function setRowsListBoxPadre($value) { $this->setViewState("RowsListBoxPadre", $value); }

  public function getCssClassListBoxPadre() { return $this->getViewState("CssClassListBoxPadre"); }
  public function setCssClassListBoxPadre($value) { $this->setViewState("CssClassListBoxPadre", $value); }

  public function getCssClassListBoxHija() { return $this->getViewState("CssClassListBoxHija"); }
  public function setCssClassListBoxHija($value) { $this->setViewState("CssClassListBoxHija", $value); }

  public function getWidthListBoxPadre() { return $this->getViewState("WidthListBoxPadre"); }
  public function setWidthListBoxPadre($value) { $this->setViewState("WidthListBoxPadre", $value); }

  public function getWidthListBoxHija() { return $this->getViewState("WidthListBoxHija"); }
  public function setWidthListBoxHija($value) { $this->setViewState("WidthListBoxHija", $value); }

  public function getEnabledListBoxPadre() { return $this->getViewState("EnabledListBoxPadre"); }
  public function setEnabledListBoxPadre($value) { $this->setViewState("EnabledListBoxPadre", $value); }

  public function getEnabledListBoxHija() { return $this->getViewState("EnabledListBoxHija"); }
  public function setEnabledListBoxHija($value) { $this->setViewState("EnabledListBoxHija", $value); }

  public function getCssClassLabelPadre() { return $this->getViewState("CssClassLabelPadre"); }
  public function setCssClassLabelPadre($value) { $this->setViewState("CssClassLabelPadre", $value); }

  public function getCssClassLabelHija() { return $this->getViewState("CssClassLabelHija"); }
  public function setCssClassLabelHija($value) { $this->setViewState("CssClassLabelHija", $value); }

  public function getVisibleLabelPadre() { return $this->getViewState("VisibleLabelPadre"); }
  public function setVisibleLabelPadre($value) { $this->setViewState("VisibleLabelPadre", $value); }

  public function getVisibleLabelHija() { return $this->getViewState("VisibleLabelHija"); }
  public function setVisibleLabelHija($value) { $this->setViewState("VisibleLabelHija", $value); }

  public function getTextLabelHija() { return $this->getViewState("TextLabelHija"); }
  public function setTextLabelHija($value) { $this->setViewState("TextLabelHija", $value); }

  public function getCssClassCheckTodosPadre() { return $this->getViewState("CssClassCheckTodosPadre"); }
  public function setCssClassCheckTodosPadre($value) { $this->setViewState("CssClassCheckTodosPadre", $value); }

  public function getCssClassCheckTodosHija() { return $this->getViewState("CssClassCheckTodosHija"); }
  public function setCssClassCheckTodosHija($value) { $this->setViewState("CssClassCheckTodosHija", $value); }

  public function getTextCheckTodosPadre() { return $this->getViewState("TextCheckTodosPadre"); }
  public function setTextCheckTodosPadre($value) { $this->setViewState("TextCheckTodosPadre", $value); }

  public function getTextCheckTodosHija() { return $this->getViewState("TextCheckTodosHija"); }
  public function setTextCheckTodosHija($value) { $this->setViewState("TextCheckTodosHija", $value); }

  public function getCssClassBotonAgregar() { return $this->getViewState("CssClassBotonAgregar"); }
  public function setCssClassBotonAgregar($value) { $this->setViewState("CssClassBotonAgregar", $value); }

  public function getCssClassBotonQuitar() { return $this->getViewState("CssClassBotonQuitar"); }
  public function setCssClassBotonQuitar($value) { $this->setViewState("CssClassBotonQuitar", $value); }

  public function getCssClassLabelAyuda() { return $this->getViewState("CssClassLabelAyuda"); }
  public function setCssClassLabelAyuda($value) { $this->setViewState("CssClassLabelAyuda", $value); }

  public function getTextLabelAyuda() { return $this->getViewState("TextLabelAyuda"); }
  public function setTextLabelAyuda($value) { $this->setViewState("TextLabelAyuda", $value); }

  public function getInvocarFuncionesEspeciales() { return $this->getViewState("InvocarFuncionesEspeciales"); }
  public function setInvocarFuncionesEspeciales($value) { $this->setViewState("InvocarFuncionesEspeciales", $value); }

  public function getMostrarFiltro() { return $this->getViewState("MostrarFiltro"); }
  public function setMostrarFiltro($value) { $this->setViewState("MostrarFiltro", $value); }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * obtiene el listado de valores seleccionados
   * @return <type>
   * @author VSR, 01/01/2011
   */
  public function valueListadoId() {
    return $this->txtIdsHija->Value;
  }

  /**
   * asigna array al control multiselect Padre
   * @param <type> $arr
   * @author VSR, 01/01/2011
   */
  public function dataSourcePadre($arr) {
    $this->lstPadre->DataSource = $arr;
  }

  /**
   * liga los datos del array al control multiselect Padre
   * @author VSR, 01/01/2011
   */
  public function dataBindPadre() {
    $this->lstPadre->dataBind();
  }

  /**
   * asigna nombre textField al control multiselect Padre
   * @param <type> $value
   * @author VSR, 01/01/2011
   */
  public function dataTextFieldPadre($value) {
    $this->lstPadre->DataTextField = $value;
  }

  /**
   * asigna nombre valueField al control multiselect Padre
   * @param <type> $value
   * @author VSR, 01/01/2011
   */
  public function dataValueFieldPadre($value) {
    $this->lstPadre->DataValueField = $value;
  }

  /**
   * asigna array al control multiselect Hija
   * @param <type> $arr
   * @author VSR, 01/01/2011
   */
  public function dataSourceHija($arr) {
    $this->lstHija->DataSource = $arr;
  }

  /**
   * liga los datos del array al control multiselect Hija
   * @author VSR, 01/01/2011
   */
  public function dataBindHija() {
    $this->lstHija->dataBind();
  }

  /**
   * asigna nombre textField al control multiselect Hija
   * @param <type> $value
   * @author VSR, 01/01/2011
   */
  public function dataTextFieldHija($value) {
    $this->lstHija->DataTextField = $value;
  }

  /**
   * asigna nombre valueField al control multiselect Hija
   * @param <type> $value
   * @author VSR, 01/01/2011
   */
  public function dataValueFieldHija($value) {
    $this->lstHija->DataValueField = $value;
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * registra los javascript asociados
   * @author VSR, 01/01/2011
   */
  protected function registrarJavaScript() {
    $prefijoControl = $this->obtenerPrefijoControl();
    $dataScript = "";
    $mostrarFiltro = "false";
    if(!Utilidades::isNullOrEmpty($this->getMostrarFiltro())) { $mostrarFiltro = $this->getMostrarFiltro(); }

    //escribe bloque js para registrar el prefijo del control
    if ($this->Visible) {
      //registra bloque javascript en la pantalla
      $this->Page->ClientScript->registerHeadScriptFile(self::NOMBRE_WEB_USER_CONTROL."_scriptFile", "js/".self::NOMBRE_ARCHIVO_JS);

      $dataScript = "wucmsObtenerIdSeleccionados('".$prefijoControl."');";
      $this->Page->ClientScript->registerEndScript($prefijoControl."incial", $dataScript);

      if($mostrarFiltro == "true") {
        $dataScript = "jQuery(document).ready(function() {";
        $dataScript .= "  jQuery('#".$this->txtFiltroMultiselect->ClientID."').keyup(function() {";
        $dataScript .= "    wucmsFiltrar('".$prefijoControl."','".$this->lstPadre->ClientID."', jQuery(this).val());";
        $dataScript .= "  });";
        $dataScript .= "});";
        $this->Page->ClientScript->registerEndScript($prefijoControl."mostrarFiltro", $dataScript);
      }

    }
  }

  /**
   * inicializa valores de los controles
   * @author VSR, 01/01/2011
   */
  protected function inicializaControles() {
    $prefijoControl = $this->obtenerPrefijoControl();
    $this->chkTodosHija->Attributes->Add("onclick", "wucmsSelectAll('".$this->lstHija->ClientID."','".$this->chkTodosHija->ClientID."')");
    $this->chkTodosPadre->Attributes->Add("onclick", "wucmsSelectAll('".$this->lstPadre->ClientID."','".$this->chkTodosPadre->ClientID."')");
    $this->lbtnAgregarItem->Attributes->Add("onclick", "return(wucmsAgregarItem('".$prefijoControl."'))");
    $this->lbtnQuitarItem->Attributes->Add("onclick", "return(wucmsQuitarItem('".$prefijoControl."'))");
    $this->lstHija->Attributes->Add("ondblclick", "return(wucmsQuitarItem('".$prefijoControl."'))");
    $this->lstPadre->Attributes->Add("ondblclick", "return(wucmsAgregarItem('".$prefijoControl."'))");
    $this->btnLimpiarFiltro->Attributes->Add("onclick", "wucmsLimpiarFiltro('".$prefijoControl."','".$this->lstPadre->ClientID."','".$this->txtFiltroMultiselect->ClientID."')");
    $this->wucmsStorage->Style = "display:none";

    //setea controles por valor de las propiedades
    if(!Utilidades::isNullOrEmpty($this->getCssClassListBoxPadre())) { $this->lstPadre->CssClass = $this->getCssClassListBoxPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getRowsListBoxPadre())) { $this->lstPadre->Rows = $this->getRowsListBoxPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getWidthListBoxPadre())) { $this->lstPadre->Width = $this->getWidthListBoxPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getEnabledListBoxPadre())) { $this->lstPadre->Enabled = $this->getEnabledListBoxPadre(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassListBoxHija())) { $this->lstHija->CssClass = $this->getCssClassListBoxHija(); }
    if(!Utilidades::isNullOrEmpty($this->getRowsListBoxHija())) { $this->lstHija->Rows = $this->getRowsListBoxHija(); }
    if(!Utilidades::isNullOrEmpty($this->getWidthListBoxHija())) { $this->lstHija->Width = $this->getWidthListBoxHija(); }
    if(!Utilidades::isNullOrEmpty($this->getEnabledListBoxHija())) { $this->lstHija->Enabled = $this->getEnabledListBoxHija(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassLabelPadre())) { $this->lblPadre->CssClass = $this->getCssClassLabelPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getVisibleLabelPadre())) { $this->lblPadre->Visible = $this->getVisibleLabelPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getTextLabelPadre())) { $this->lblPadre->Text = $this->getTextLabelPadre(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassLabelHija())) { $this->lblHija->CssClass = $this->getCssClassLabelHija(); }
    if(!Utilidades::isNullOrEmpty($this->getVisibleLabelHija())) { $this->lblHija->Visible = $this->getVisibleLabelHija(); }
    if(!Utilidades::isNullOrEmpty($this->getTextLabelHija())) { $this->lblHija->Text = $this->getTextLabelHija(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassCheckTodosPadre())) { $this->chkTodosPadre->CssClass = $this->getCssClassCheckTodosPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getTextCheckTodosPadre())) { $this->chkTodosPadre->Text = $this->getTextCheckTodosPadre(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassCheckTodosHija())) { $this->chkTodosHija->CssClass = $this->getCssClassCheckTodosHija(); }
    if(!Utilidades::isNullOrEmpty($this->getTextCheckTodosHija())) { $this->chkTodosHija->Text = $this->getTextCheckTodosHija(); }

    if(!Utilidades::isNullOrEmpty($this->getVisibleCheckTodosPadre())) { $this->holderCheckTodosPadre->Visible = $this->getVisibleCheckTodosPadre(); }
    if(!Utilidades::isNullOrEmpty($this->getVisibleCheckTodosHija())) { $this->holderCheckTodosHija->Visible = $this->getVisibleCheckTodosHija(); }
    
    if(!Utilidades::isNullOrEmpty($this->getCssClassBotonAgregar())) { $this->lbtnAgregarItem->CssClass = $this->getCssClassBotonAgregar(); }
    if(!Utilidades::isNullOrEmpty($this->getCssClassBotonQuitar())) { $this->lbtnQuitarItem->CssClass = $this->getCssClassBotonQuitar(); }

    if(!Utilidades::isNullOrEmpty($this->getCssClassLabelAyuda())) { $this->lblAyuda->CssClass = $this->getCssClassLabelAyuda(); }
    if(!Utilidades::isNullOrEmpty($this->getVisibleLabelAyuda())) { $this->lblAyuda->Visible = $this->getVisibleLabelAyuda(); }
    if(!Utilidades::isNullOrEmpty($this->getTextLabelAyuda())) { $this->lblAyuda->Text = $this->getTextLabelAyuda(); }

    if(!Utilidades::isNullOrEmpty($this->getInvocarFuncionesEspeciales())) { $this->txtFuncionesEspeciales->Value = $this->getInvocarFuncionesEspeciales(); }
    if(!Utilidades::isNullOrEmpty($this->getMostrarFiltro())) { $this->pnlFiltrar->Visible = ( $this->getMostrarFiltro() == "false" ) ? false : true; }
  }

  private function obtenerPrefijoControl(){
    $clientId = $this->pnlBloque->ClientID;
    $id = $this->pnlBloque->ID;
    $prefijoControl = str_replace($id, "", $clientId);
    return $prefijoControl;
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function  onLoad($param) {
    parent::onLoad($param);
    //registra los bloques javascript respectivos
    $this->registrarJavaScript();
    $this->inicializaControles();
  }
//</editor-fold>


}

?>
